package com.boss.salary.service;

import com.boss.common.entity.PageDTO;
import com.boss.framework.dto.PaginationDTO;
import com.boss.framework.exception.AppRuntimeException;
import com.boss.salary.entity.PersonInfo;
import com.boss.salary.vo.PersonInfoVO;
import com.boss.sys.ca.user.dto.UserDTO;

import java.util.List;
import java.util.Map;

public interface IPersonInfoService {
    /**
     * 分页查询 人员信息数据
     * @param paginationDTO
     * @return
     * @throws AppRuntimeException
     */
    PageDTO<PersonInfo> queryPersonInfoPage(PaginationDTO paginationDTO, Map<String, Object> queryParam) throws AppRuntimeException;

    /**
     * 分页查询 工资是否停发
     * @param paginationDTO
     * @return
     * @throws AppRuntimeException
     */
    PageDTO<PersonInfo> queryStopPaySalary(PaginationDTO paginationDTO, Map<String, Object> queryParam, UserDTO userDTO,String tokenid) throws AppRuntimeException;

    /**
     * 增加 人员信息数据
     * @param personInfo
     * @return
     */
    void savePersonInfo(PersonInfo personInfo);

    /**
     * 更新 人员信息数据
     * @param personInfo
     * @return
     */
    void updatePersonInfo(PersonInfo personInfo);
    /**
     * 批量更新 人员信息数据
     * @param personInfos
     * @return
     */
    void updatePersonInfoList(List<PersonInfo> personInfos);

    /**
     * 根据id删除人员信息数据
     * @param id
     * @return
     */
    void deletePersonInfo(String id);

    /**
     * 获取在职和离休人数
     * @return
     */
    Map<String, Object> getStateNum(Map<String, Object> queryParam);

    /**
     * 导出查询本单位所有人
     * @param agencyId
     * @return
     */
    List<PersonInfo> getAllPersonInfo(String agencyId);

    /**
     * 获取单个用户信息
     * @param personId
     * @return
     */
    PersonInfoVO getOnePersonInfo(String personId);


}
